package com.todo.biz.infrastructure.mapper;

import com.todo.biz.infrastructure.entity.condition.FeedbackCondition;
import com.todo.biz.infrastructure.entity.po.FeedbackPO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * (Feedback)表数据库访问层
 *
 * @author zhangwenxiang
 * @since 2024-03-04 00:19:46
 */
@Mapper
public interface FeedbackMapper {

    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     */
    FeedbackPO queryFeedbackPOById(@Param("id") Long id);

    /**
     * 新增数据
     *
     * @param feedback 实例对象
     * @return 影响行数
     */
    int insertFeedbackPO(FeedbackPO feedback);

    /**
     * 批量新增数据
     *
     * @param feedbackPOList List<Feedback> 实例对象列表
     * @return 影响行数
     */
    int insertBatch(@Param("entities") List<FeedbackPO> feedbackPOList);

    /**
     * 修改数据
     *
     * @param feedback 实例对象
     * @return 影响行数
     */
    int updateFeedbackPOById(FeedbackPO feedback);

    /**
     * 通过主键删除数据
     *
     * @param id 主键
     * @return 影响行数
     */
    int removeFeedbackPOById(@Param("id") Long id);

    /**
     * 查询用户反馈列表
     *
     * @param createUser
     * @param status
     * @return
     */
    List<FeedbackPO> queryFeedbackListByUserAndStatus(@Param("createUser") Long createUser, @Param("status") Integer status);

    /**
     * 更新反馈状态
     *
     * @param id
     * @param oldStatus
     * @param newStatus
     * @return
     */
    Boolean updateStatusById(@Param("id") Long id, @Param("oldStatus") Integer oldStatus, @Param("newStatus") Integer newStatus);

    /**
     * 多条件查询反馈信息
     *
     * @param feedbackCondition
     * @return
     */
    List<FeedbackPO> queryFeedbackPOByCondition(FeedbackCondition feedbackCondition);

    /**
     * 多条件查询反馈信息总数
     *
     * @param feedbackCondition
     * @return
     */
    Long queryCountByCondition(FeedbackCondition feedbackCondition);

    Boolean removeFeedbackPOByIdList(@Param("idList") List<Long> idList);
}

